<?php

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

/**
 * Description of produtos
 *
 * @author Lucas Pinheiro
 */
class Produtos extends Admin {

    //put your code here
    public function __construct() {
        parent::__construct();
        $this->load->model('produtos_model');
    }

    public function cadastrar() {
        $v_dados = array();
        $v_dados['id_produtos'] = '';
        $v_dados['nome'] = '';
        $v_dados['descricao'] = '';
        $v_dados['valor'] = '';
        $v_dados['imagem'] = '';
        $v_dados['id_categoria'] = $this->combo_categorias();
        $this->display($this->parser->parse('admin/produtos/frm_cad_view', $v_dados, TRUE), 'Cadastro de Produtos');
    }

    public function alterar() {
        $b_consultar = $this->produtos_model->get('id_produtos', $this->uri->segment(4));
        $v_dados = array();

        $v_dados['id_produtos'] = $b_consultar->id_produtos;
        $v_dados['nome'] = $b_consultar->nome;
        $v_dados['descricao'] = $b_consultar->descricao;
        $v_dados['valor'] = number_format($b_consultar->valor, 2, ',', '.');
        $image_properties = array(
            'src' => base_url('imagens/produtos/' . $b_consultar->imagem),
            'alt' => $b_consultar->nome,
            'height' => '150',
            'title' => $b_consultar->nome
        );
        $v_dados['imagem'] = ($b_consultar->imagem != NULL ? img($image_properties) : $b_consultar->imagem);
        $v_dados['id_categoria'] = $this->combo_categorias($b_consultar->id_categoria);
        $this->display($this->parser->parse('admin/produtos/frm_cad_view', $v_dados, TRUE), 'Alteração de Produtos');
    }

    public function excluir() {
        $b_excluir = $this->produtos_model->excluir('id_produtos', $this->uri->segment(4));
        if ($b_excluir != NULL) {
            $this->display('Produto excluido com sucesso.', 'Exclusão de Produtos');
        } else {
            $this->display('Não foi possivel excluir o produto.', 'Exclusão de Produtos');
        }
    }

    public function gravar() {

        $this->form_validation->set_rules('nome', 'Nome', 'trim|required');
        $this->form_validation->set_rules('descricao', 'Descrição', 'trim|required');
        $this->form_validation->set_rules('valor', 'Valor', 'trim|required');
        $this->form_validation->set_rules('id_categoria', 'Categoria', 'trim|required');
        if ($this->form_validation->run() == FALSE) {
            $this->display('Seguintes erros foram localizados.<br>' . validation_errors(), 'Error da Categoria');
        } else {
            $uplod = array();
            if ($_FILES['imagem']['name'] != '') {
                $uplod = $this->_do_upload();
            }
            if (count($uplod) > 0) {
                if ($uplod['resultado'] == 'sucesso') {
                    $p_dados = array();
                    $p_dados['nome'] = $this->input->post('nome');
                    $p_dados['descricao'] = $this->input->post('descricao');
                    $p_dados['valor'] = $this->_converter_moeda($this->input->post('valor'));
                    $p_dados['id_categoria'] = $this->input->post('id_categoria');
                    $p_dados['imagem'] = $uplod['upload_data']['file_name'];
                    if ($this->input->post('id_produtos') == '') {
                        $this->produtos_model->cadastrar($p_dados);
                        $this->display('Produto cadastrado com sucesso', 'Cadastro de Produtos');
                    } else {
                        $this->produtos_model->alterar('id_produtos', $this->input->post('id_produtos'), $p_dados);
                        $this->display('Produto alterado com sucesso', 'Cadastro de Produtos');
                    }
                } else {
                    $this->display('Seguintes erros foram localizados.<br>' . $uplod['error'], 'Error do Produtos');
                }
            } else {
                $p_dados = array();
                $p_dados['nome'] = $this->input->post('nome');
                $p_dados['descricao'] = $this->input->post('descricao');
                $p_dados['valor'] = $this->_converter_moeda($this->input->post('valor'));
                $p_dados['id_categoria'] = $this->input->post('id_categoria');
                if ($this->input->post('id_produtos') == '') {
                    $this->produtos_model->cadastrar($p_dados);
                    $this->display('Produto cadastrado com sucesso', 'Cadastro de Produtos');
                } else {
                    $this->produtos_model->alterar('id_produtos', $this->input->post('id_produtos'), $p_dados);
                    $this->display('Produto alterado com sucesso', 'Cadastro de Produtos');
                }
            }
            $this->display('Seguintes erros foram localizados.<br>' . validation_errors(), 'Error do Produtos');
        }
    }

    public function consultar() {
        $b_total = $this->produtos_model->get_all();
        $b_consultar = $this->produtos_model->get_all(NULL, NULL, $this->registro_por_pagina, $this->uri->segment(4, 0));
        $v_dados = array();
        $v_dados['paginacao'] = '';
        $v_dados['produtos'] = array();
        foreach ($b_consultar as $k => $v) {
            $v_dados['produtos'][$k]['id_produtos'] = $v->id_produtos;
            $v_dados['produtos'][$k]['nome'] = $v->nome;
            $v_dados['produtos'][$k]['descricao'] = $v->descricao;
            $v_dados['produtos'][$k]['valor'] = number_format($v->valor, 2, ',', '.');
            $v_dados['produtos'][$k]['id_categoria'] = $v->id_categoria;
            $image_properties = array(
                'src' => base_url('imagens/produtos/' . $v->imagem),
                'alt' => $v->nome,
                'height' => '150',
                'title' => $v->nome
            );
            $v_dados['produtos'][$k]['imagem'] = ($v->imagem != NULL ? img($image_properties) : $v->imagem);
            $v_dados['produtos'][$k]['acao'] = anchor(admin_url('produtos/alterar/' . $v->id_produtos), 'Alterar');
            $v_dados['produtos'][$k]['acao'] .= ' | ' . anchor(admin_url('produtos/excluir/' . $v->id_produtos), 'Excluir');
        }

        $config = array();
        $config['base_url'] = base_url($this->uri->segment(1) . '/' . $this->uri->segment(2) . '/' . $this->uri->segment(3) . '/');
        $config['total_rows'] = count($b_total);
        $config['per_page'] = $this->registro_por_pagina;
        $config['uri_segment'] = 4;
        $config['num_links'] = 5;

        $this->pagination->initialize($config);

        $v_dados['paginacao'] = $this->pagination->create_links();

        $this->display($this->parser->parse('admin/produtos/frm_con_view', $v_dados, TRUE), 'Consulta de Produtos');
    }

    function _do_upload() {
        $config = array();
        $config['upload_path'] = FCPATH . 'imagens/produtos/';
        $config['allowed_types'] = 'gif|jpg|png';
        $config['max_size'] = '300';
        $config['max_width'] = '300';
        $config['max_height'] = '300';

        $this->load->library('upload', $config);

        if (!$this->upload->do_upload('imagem')) {
            return array('resultado' => 'error', 'error' => $this->upload->display_errors());
        } else {
            return array('resultado' => 'sucesso', 'upload_data' => $this->upload->data());
        }
    }

    private function combo_categorias($id_categorias = null) {
        $this->load->model('categorias_model');
        $b_consultar = $this->categorias_model->get_all();
        $options = '<option value="" selected="selected">Selecionar</option>';
        foreach ($b_consultar as $k => $v) {
            if ($v->id_categorias == $id_categorias) {
                $options .= '<option value="' . $v->id_categorias . '" selected="selected">' . $v->descricao . '</option>';
            } else {
                $options .= '<option value="' . $v->id_categorias . '">' . $v->descricao . '</option>';
            }
        }
        return $options;
    }

    private function _converter_moeda($valor) {
        $valor = str_replace('.', '', $valor);
        return str_replace(',', '.', $valor);
    }

}